In many database applications, it is preferable for multiple separate database instances to share a common data structure, or schema. This allows developers and maintainers of tools that interact with databases to make efficient assumptions about the database structure based on a known baseline.
As used through this disclosure, a database is a structured set of data held in a computer. Database software provides functionalities that allow building, modifying, accessing, and updating both databases and the underlying data. Databases and database software reside on database servers. Database servers are collections of hardware and software that provide storage and access to the database and enable execution of the database software.
A common task for database administrators therefore is updating the data structures of multiple database instances to match a “gold” or “master” data schema. This task can be performed manually, via the software interfaces provided by various database systems, or can be automated by the execution of data definition language (DDL) scripts that perform the necessary tasks to modify the schema of a target system. Generally, it is also necessary to create “back out” scripts, which can roll back any of the schema changes in the case of problems.
In many cases, DDL scripts are generated manually, taking into account the current schema in place on each of the target systems. In large environments, this could involve the creation of hundreds of separate scripts. It is therefore desirable to provide a more agile, automated solution to better handle schema updates.
In addition, it is also desirable for database administrators to be able to maintain version controlled definitions of data schema, so that database instances can be efficiently configured with older or newer versions of a given schema for testing, back up, or regression purposes.